'''
lru_cache装饰器的应用
    - 使用前提
        - 同样的函数参数一定得到同样的结果
        - 函数执行时间很长, 且要执行多次
    - 本质是函数调用的参数=> 返回值
    - 缺点
        - 不支持缓存过期, key无法过期、失效
        - 不支持清除操作
        - 不支分布式, 是一个单机的缓存
    - 适用场景
        - 单机上需要空间换时间的地方, 可以用缓存将计算变成快速查询
'''

import time
import functools

@functools.lru_cache()
def a(x,y=2,z=3):
    time.sleep(4)
    return x+y+z
# print(a(1, 2))
# print(a(2,1))
print(a(2,y=3,z=3))
print(a(2,y=3,z=3))


